# java-explore-with-me

## Для чего предназначен этот проект
Explore With Me - это приложение дает возможность делиться информацией об интересных событиях и помогает найти компанию для участия в них. Реализовано в виде двух микросервисов с отдельными БД - один для сохранения и получения статистики, второй с основной бизнес логикой.

## Инструкция по развертыванию проекта:
- docker-compose build
- docker-compose up -d

### Приложение включает в себя сервисы:
- Основной сервис — содержит всё необходимое для работы продукта.
    - Просмотр событий без авторизации;
    - Возможность создания и управления категориями;
    - События и работа с ними - создание, модерация;
    - Запросы пользователей на участие в событии - запрос, подтверждение, отклонение;
    - Создание и управление подборками;
- Сервис статистики — хранит количество просмотров и позволяет делать различные выборки для анализа работы приложения.

## Описание сервисов
### Основной сервис работаеат на порту 8080
API основного сервиса разделен на три части. Первая — публичная, доступна без регистрации любому пользователю сети. Вторая — закрытая, доступна только авторизованным пользователям. Третья — административная, для администраторов сервиса.

- **Публичный** (доступен для всех пользователей)
    - API для работы с событиями
    - API для работы с категориями
    - API для работы с подборками событий
- **Приватный** (доступен только для зарегистрированных пользователей)
    - API для работы с событиями
    - API для работы с запросами текущего пользователя на участие в событиях
- **Административный** (доступен только для администратора проекта)
    - API для работы с событиями
    - API для работы с категориями
    - API для работы с пользователями
    - API для работы с подборками событий
### Сервис статистики работает на порту 9090:
Собирает информацию. Во-первых, о количестве обращений пользователей к спискам событий и, во-вторых, о количестве запросов к подробной информации о событии. На основе этой информации формируется статистика о работе приложения.
- **Административный** (доступен только для администратора проекта)
    - API для работы со статистикой посещений
## Спецификация REST API swagger
- [Основной сервис](https://github.com/m777mm777/java-explore-with-me/blob/main/ewm-main-service-spec.json)
- [Сервис статистики](https://github.com/m777mm777/java-explore-with-me/blob/main/ewm-stats-service-spec.json)
